var express = require('express');
var app = express();
var fs = require("fs");

   function listUser(req,res){
      fs.readFile( './datas/' + "users.json", 'utf8', function (err, data) {
         res.setHeader('Content-Type', 'text/html; charset=utf8');
         if(err){
             console.log(err);
             var result = {
               status: 404,
               message: "failed",
               data: err
            }
            res.jsonp(result);
         }else
         {
            console.log(data);
            var users = data.toString();
            users = JSON.parse(users);
            var result = {
               status: 200,
               message: "success",
               data: users.data
            }
            res.jsonp(result);
         }
        });
   }

   function getUserPage(p,s,req,res){
      fs.readFile( './datas/users2.json', 'utf8', function (err, data) {
         res.setHeader('Content-Type', 'text/html; charset=utf8');
         if(err){
            console.log(err);
            //res.end("错误提示："+err);
                  
            var result = {
               status: 404,
               message: "failed",
               data: err
            }
            //res.end(JSON.stringify(pageUser));
            res.jsonp(result);
        }else
        {
            var users = data.toString();
            users = JSON.parse(users);
            //var length = users.data.length;
            var pageUser = users.data.slice(s*p,(p+1)*s);
           
            console.log('----------分页成功-------------');
            
            var result = {
               status: 200,
               message: "success",
               data: pageUser
            }
            //res.end(JSON.stringify(pageUser));
            res.jsonp(result);
        }
         
      });
   }

   function addUser(params,req,res)
   {
      fs.readFile( './datas/users.json', 'utf8', function (err, data) {
         res.setHeader('Content-Type', 'text/html; charset=utf8');
         if(err){
            console.log(err);
            res.end("错误提示："+err);
        }else
        {
            var users = data.toString();//将二进制的数据转换为字符串
            users = JSON.parse(users);//将字符串转换为json对象
            users.data.push(user);//将传来的对象push进数组对象中
            users.total = users.data.length;//定义一下总条数，为以后的分页打基础
            console.log(users.data);
   
            var str = JSON.stringify(users);//因为nodejs的写入文件只认识字符串或者二进制数，所以把json对象转换成字符串重新写入json文件中
            fs.writeFile('./datas/users.json',str,function(err){
               if(err){
                  console.error(err);
                  res.end("添加失败");
               }
               console.log('----------新增成功-------------');
               res.end("添加成功");
               })
         }
     });
   } 
   function deleteUser(id,req,res) 
   {
      fs.readFile( './datas/users.json', 'utf8', function (err, data) {
         res.setHeader('Content-Type', 'text/html; charset=utf8');
         if(err){
            console.log(err);
            res.end("错误提示："+err);
        }else
        {
            var users = data.toString();
            users = JSON.parse(users);
            for(var i = 0; i < users.data.length;i++){
               if(id == users.data[i].id){
                  //console.log(person.data[i])
                  users.data.splice(i,1);
               }
            }
            users.total = users.data.length;

            var str = JSON.stringify(users);
            fs.writeFile('./datas/users.json',str,function(err){
               if(err){
                  console.error(err);
                  res.end("删除失败");
               }
               console.log('----------删除成功-------------');
               res.end("删除成功");
            })
         }
      });
   } 
   function getUser(id,req,res) 
   {
      fs.readFile( './datas/users.json', 'utf8', function (err, data) {
         res.setHeader('Content-Type', 'text/html; charset=utf8');
         if(err){
            console.log(err);
            var result = {
               status: 404,
               message: "failed",
               data: err
            }
            res.jsonp(result);
        }else
        {
            var users = data.toString();
            users = JSON.parse(users);
            var user;
            for(var i = 0; i < users.data.length;i++){
               if(id == users.data[i].id){
                  user=users.data[i];
                  break;
               }
            }
            var result = {
               status: 200,
               message: "success",
               data: user
            }
            if(user==null)
            {
               result.status=201;
               result.message="failed";
               result.data="该用户不存在";
            }
            res.jsonp(result);
            
         }
      });
   } 
   function updateUser(id,params,req,res){
      fs.readFile( './datas/users.json', 'utf8', function (err, data) {
         res.setHeader('Content-Type', 'text/html; charset=utf8');
         if(err){
            console.log(err);
            res.end("错误提示："+err);
        }else
        {
            var users = data.toString();
            users = JSON.parse(users);
            for(var i = 0; i < users.data.length;i++){
               if(id == users.data[i].id){
                  for(var key in params)
                  {
                     if(users.data[i][key])
                        users.data[i][key]=params[key];
                  }
               }
            }
            users.total = users.data.length;

            var str = JSON.stringify(users);
            fs.writeFile('./datas/users.json',str,function(err){
               if(err){
                  console.error(err);
                  res.end("更新失败");
               }
               console.log('----------更新成功-------------');
               res.end("更新成功");
            })
         }
      });
   }
app.get('/addUser', function (req, res) {
   var user = {
      "name" : "gisxy",
      "password" : "password4",
      "profession" : "teacher",
      "id": 5     
      }
   addUser(user,req,res);   
})
app.get('/listUsers', function (req, res) {
   listUser(req,res);
})
app.get('/deleteUser', function (req, res) {
   var id=3;
   deleteUser(id,req,res);
})
app.get('/updateUser', function (req, res) {
   var id=2;
   var params = {
      "name":"gisxy"
  }
   updateUser(id,params,req,res);
})
app.get('/getUserPage', function (req, res) {  
   console.log(req.query);
   getUserPage(Number(req.query.p),Number(req.query.s),req,res);
})
app.get('/getUser',function(req,res){
   getUser(req.query.user,req,res);
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port
  console.log("应用实例，访问地址为 http://%s:%s", host, port)

})